<!--
 * @Description:
 * @version:
 * @Author: 尹鹏孝
 * @Date: 2023-03-25 11:21:47
 * @LastEditors: 尹鹏孝
 * @LastEditTime: 2023-03-27 10:55:14
-->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>强缓存和协商缓存</title>
</head>
<body>
    强缓存是express,和catch-control
    默认强缓存从express取，取到就不请求，没取到就看协商缓存
    catch-control：public,privet,
    no-catch：设置了该字段需要先和服务端确认返回的资源是否发生了变化，如果资源未发生变化，则直接使用缓存好的资源(走协商缓存),
    no-store:不使用缓存,
    max-age：设置缓存最大有效期,
    s-maxage：适用于共享缓存CDN,
    max-stale优先级高于express,

    当强缓存过期或者未设置时候会触发协商缓存，协商缓存是http头部设置了e-tag和Last-Modified。e-tag优先级高于last-modilfied，主要原因是，last-modilfed后If-Modified-Since可能更新不及时，这时候用e-tag比对If-None-Match
    总结：强缓存和协商缓存都会使用本地缓存的副本，区别在于协商缓存会往服务器发一次请求。缓存不命中时候都会向服务器发送方缓存，实际应用中强缓存和协商缓存是一起使用的，浏览器根据请求信息，判断，强缓存是否命中，命中就直接使用m如果没命中，则根据头部信息再次发送请求走协商缓存，协商缓存命中就不走服务器资源，否则返回最新资源。
</body>
</html>